home *** CD-ROM | disk | FTP | other *** search
/ MacWorld: Complete Mac Interactive / Macworld Complete Mac Interactive CD)(1994).iso / The Best of BMUG / Utilities / Text and Speech / Alpha.5.76 / Help / Debugging < prev    next >
Text File  |  1994-03-08  |  2KB  |  77 lines

  1. 5.0 introduces the Tcl function-tracing command 'traceFunc'. traceFunc 
  2. allows you to trace a specfic function whenever it is called, sending the 
  3. output to another window. The indented trace of the function includes all 
  4. parameters, each argument enclosed within single quotes, as well as the 
  5. function result. 
  6.  
  7. The syntax of the function is:
  8.  
  9. traceFunc on <funcName> <winName>
  10. traceFunc off
  11. traceFunc status
  12.  
  13.  
  14. For example, if I want to trace the proc 'nextFunc' (defined in 
  15. procs.tcl), the following might be a log of my activity at the Tcl shell:
  16.  
  17. Welcome to Alpha's Tcl shell.
  18. Alpha> traceFunc on nextFunc traceWin
  19. Alpha> traceFunc status
  20. Func-tracing on, func: nextFunc, win: traceWin
  21. Alpha> 
  22.  
  23. Now I create a new window, "dirty" it so that I can get a save dialog, 
  24. and save it as 'traceWin'. Note that tracing is only sent to open 
  25. windows, so I must leave 'traceWin' open.
  26.  
  27. Then I open any random non-C file (because I want the function to fail), go 
  28. to the beginning of the file, and use the Utils:Execute menu command to run 
  29. 'nextFunc' (type clover-', then nextF<space>). The output should look 
  30. something like the following: 
  31.  
  32. nextFunc 
  33.  searchFunc '1' 
  34.   getPos 
  35.   OK: 38530
  36.   select '38530' 
  37.   OK: 
  38.   saveVars 
  39.   OK: 
  40.   if '(1==1)' '
  41.         nextLine
  42.     ' 'else' '
  43.         previousLine
  44.     ' 
  45.    nextLine 
  46.    OK: 
  47.   OK: 
  48.   getPos 
  49.   OK: 38573
  50.   set 'pos' '38573' 
  51.   OK: 38573
  52.   setVar 'regExpr' '1' 
  53.   OK: 
  54.   setVar 'forward' '1' 
  55.   OK: 
  56.   setVar 'ignoreCase' '1' 
  57.   OK: 
  58.   search '^[^ \t\(#\r/@].*\(.*\)$' '38573' 
  59.   ERROR: Search unsuccessful
  60.  ERROR: Search unsuccessful
  61. ERROR: Search unsuccessful
  62.  
  63.  
  64. The trace output shows that the problem was an unsuccessful search. In 
  65. this case, a dialog informed us of this fact anyway, but many Alpha 
  66. routines are not as friendly when it comes to error messages.
  67.  
  68.  
  69. Another way to debug Tcl routines is to insert statements that print 
  70. values to another window. For example, one could use the following 
  71. routine: 
  72.  
  73. proc out args {
  74.     insertText -w "*tcl shell*" $args
  75. }
  76.  
  77.